perm filename MUSIC.TVR[UP,DOC]5 blob
sn#168650 filedate 1975-07-07 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00041 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00006 00002 Music Manual
C00011 00003 Music Manual
C00012 00004 Music Manual
C00015 00005 Music Manual Changes
C00018 00006 Music Manual
C00021 00007 Music Manual Declarations
C00025 00008 Music Manual Declarations
C00029 00009 Music Manual Declarations
C00031 00010 Music Manual
C00035 00011 Music Manual Expressions
C00037 00012 Music Manual
C00040 00013 Music Manual Statements
C00043 00014 Music Manual Statements
C00046 00015 Music Manual Statements
C00048 00016 Music Manual
C00051 00017 Music Manual Extended Commands
C00053 00018 Music Manual
C00056 00019 Music Manual Unit Generators
C00059 00020 Music Manual Unit Generators
C00062 00021 Music Manual Unit Generators
C00065 00022 Music Manual Unit Generators
C00066 00023 Music Manual
C00069 00024 Music Manual Built-in Functions
C00072 00025 Music Manual Built-in Functions
C00074 00026 Music Manual Built-in Functions
C00076 00027 Music Manual
C00077 00028 Music Manual
C00082 00029 Music Manual Syntax
C00084 00030 Music Manual
C00085 00031 Music Manual Reserved Words
C00086 00032 Music Manual
C00089 00033 Music Manual Error Messages.
C00092 00034 Music Manual Error Messages.
C00094 00035 Music Manual Error Messages.
C00096 00036 Music Manual Error Messages.
C00099 00037 Music Manual Error Messages.
C00102 00038 Music Manual Error Messages.
C00103 00039 Music Manual
C00107 00040 Music Manual
C00108 00041
C00109 ENDMK
C⊗;
Music Manual
T A B L E O F C O N T E N T S
SECTION PAGE
1 Changes . . . . . . . . . . . . . . . . . 2
1-1 Changes to the Music Compiler
(NEWMUS) . . . . . . . . . . 2
1-2 TAPNEW and CONNEW . . . . . . . . . 3
1-3 Changes to UDPLAY . . . . . . . . . 3
2 Declarations . . . . . . . . . . . . . . . . 4
2-1 Identifiers . . . . . . . . . . . 4
2-2 Variable Declaration . . . . . . . . 4
2-3 Array Declaration . . . . . . . . . 5
2-4 Function declaration . . . . . . . . 5
3 Expressions . . . . . . . . . . . . . . . . 8
3-1 Function Call: . . . . . . . . . . 8
3-2 Unit Generator Call . . . . . . . . . 9
4 Statements . . . . . . . . . . . . . . . . 10
4-1 Function Call: . . . . . . . . . 10
4-2 Unit Generator Call . . . . . . . . 10
4-3 WHILE Statement . . . . . . . . . 11
4-4 UNTIL Statement . . . . . . . . . 11
4-5 FOR Statement . . . . . . . . . . 11
4-6 PRINT Statement . . . . . . . . . 12
4-7 Assignment Statement . . . . . . . 12
4-8 Block . . . . . . . . . . . . 13
5 Extended Commands . . . . . . . . . . . . . 14
6 Unit Generators . . . . . . . . . . . . . . 16
6-1 Controlled Calling Rates . . . . . . 16
6-2 VFMULT . . . . . . . . . . . . 16
6-3 LINEN . . . . . . . . . . . . 17
6-4 VALUE . . . . . . . . . . . . 17
6-5 The OSCIL family of Unit Generators . . 18
6-6 The ZOSCIL Family of Unit Generators . . 19
7 Built-in Functions . . . . . . . . . . . . . 21
7-1 SYNTH . . . . . . . . . . . . 21
7-2 SEG . . . . . . . . . . . . . 21
7-3 SEE . . . . . . . . . . . . . 22
7-4 SETSPEED . . . . . . . . . . . 22
7-5 PRINT . . . . . . . . . . . . 22
7-6 RDNUM . . . . . . . . . . . . 23
7-7 RAND . . . . . . . . . . . . . 23
7-8 INT . . . . . . . . . . . . . 23
7-9 FORTRAN Functions . . . . . . . . 24
8 Making Music . . . . . . . . . . . . . . . 25
Page
Music Manual
Appendix A Syntax . . . . . . . . . . . . . . 26
Appendix B Reserved Words . . . . . . . . . . . . 29
Appendix C Error Messages. . . . . . . . . . . . 30
Page i
Music Manual
SECTION 1
_______ _
Changes
_______
Most of the problems which caused the message ILL MEM REF have been
eliminated. If come across any problems or have any needs or
suggestions, Please bring them to my attention by saying to the
Monitor:
.MAIL TVR
The MAIL program will explain itself.
1-1 Changes to the Music Compiler (NEWMUS)
___ _______ __ ___ _____ ________ ________
The sample output routines have been rewritten to eliminate the
BIGBIT kludge. The intermediate files whose extensions have been
MUSAA.DMD are now in the form: <file name>.<integer>, for example:
TEST.0, TEST.1, TEST.2,... Now more than one set of intermediate
files may be on the disk at one time an any set may be deleted by
saying DEL <file name>.*, for example DEL TEST.*. The format has also
been changed, since it is no longer done with FORTRAN. Therefore a
new conversion program has also been written to replace CONNEW,
called NMUSIO. GARPLY is still used to play from the disk. For
details, see Page 25.
The error printout routines now contain an option to continue, or to
edit, to retry, or to debug with DDT.
Core is obtained automatically, whenever possible. It still loses
under certain circumstances.
Play now prints the run time used in computing the samples.
When the Compiler asks for an input file, it is no longer necessary
to precede a file name with DSK:. If just a return is typed, TTY: is
assumed.
The Compiler will accept files editted by TVED or E.
Page 2
Music Manual Changes
When inputting from the TTY, SYNTH and SEG will display the array
being filled.
NEWMUS should generate slightly better code for constants.
Array elements may be individually referenced. This allows as
complex waveforms as can be described by a mathematic expression,
instead of the previous restrictions of combination of sine waves or
approximation by line segments.
There is a new set of statements and block structure added. These
statements include IF, WHILE, UNTIL and FOR statements. A print
statement has been added which allows literal strings so that
messages may be printed as well as numbers, which are now printed in
floating point notation. The literal strings may also be passed to
functions. In order to use certain routines in the FORTRAN Library,
the data type INTEGER has been added but is currently limited to the
external functions until type conversion code can be added to the
compiler.
Functions may now be blocks as well as expressions.
There is a new extend mode command: FREEZE.
To make debugging the compiler easier, a special debugging mode has
been added.
1-2 TAPNEW and CONNEW
___ ______ ___ ______
TAPNEW and CONNEW will not work with NEWMUS, please read about new
scheme on . Note that tapes written in the old format should be
read with the old programs.
1-3 Changes to UDPLAY
___ _______ __ ______
UDPLAY now detects the previously mysterious premature end of sound.
Also, a problem in the old version caused it to do excessive
computation which often caused the lossage described above has been
corrected. It also new checks the validity of your responses, and
will restart if you type altmode or backspace.
Page 3
Music Manual
SECTION 2
_______ _
Declarations
____________
2-1 Identifiers
___ ___________
<identifier> ::= <letter>{<alphanumeric>}
<alphanumeric> ::= <letter>|<number>
<letter> ::= A|B|C|...Z|_|$|#
<digit> ::= 0|1|2|...9
An identifier always begins with a letter and may be followed with
any number of letters or digits. There are three characters which
are treated as letters, $, and _. Lower case letters are converted
_ _
to upper case. Certain identifiers have special meanings which may
not be used as names for variables, functions, arrays or instruments.
There are two kinds, P and U variables, which are of the form
P<number> and U<number> (see Page 4) and reserved words like ARRAY
_ _ _____
or BEGIN. A list of reserved words is contained in Appendix SECTION
_____
.
2-2 Variable Declaration
___ ________ ___________
<variable declaration> ::= VARIABLE <identifier>{,<identifier>};
All variables must be declared before they are used. A variable
declaration consists of the reserved word VARIABLE followed by a list
of identifiers to be declared as variables. All variables must be
declared before they are used. If they are to be used during R-Time
(see Page , they must be declared as R-Time variable by preceding
the variable name with a slash in their declaration.
All variables are stored in floating pointer notation.
There are certain variarray decl. li
<variable>(<constant>)
All arrays must be declared before they are used. An `rray
λdeclaration consists of the reserved word ARRAY followed by a list
consisting of the identifier followed by the array size in
parenthesis, separated by commas. If there are several arrays of the
same size, the size may be omitted on all but the last array of that
size. Arrays are currently restricted to single subscripts. Arrays
within blocks are not dynamically allocated(1); they are allocated
are compile time, hence they must be a fixed size.
Example:
ARRAY F1,F2,F3(512),BAZ(2000); COMMENT Declares F1, F2, F3 to be
arrays of length 512, BAZ t/ be an
array of length 2000;
2-4 Function declaration
___ ________ ___________
<function declaration> ::= FUNCTION <identifier>(<formal list>)
<function tail≡|
EXTERNAL FUNCTION <identifier>(<formal li
<formal list> ::= <formal declaration>{,<formal list>}
<formal declaration> ::= ARRAY <identifier> | INTEGER <identifier>
STRING <identifier> | <identifier>
<function tail> ::= ; <block> | = <expression>
_______________________
(1) Dynamic allocation will probably be implemented in the future.
Page 5
Music Manual Declarations
A function declaration defines a function in NEWMUS. A function
takes from 0 to 2n arguments, which may be variables, arrays, string
constants or expressions and returns a value, which is a real number.
Functions are executed at either I-time or R-time, depending on the
types of the arguments.
The function declaration includes a list of formal parameters, call
take on the values of their respective reall arguments when the
function is called. The formal parameters are local variables, that
is they are known only within the function which they are declared.
Outside that function, they are not defined or may have some
different definition.
Functions are always called by reference(1), which means that if an
assignment
formal parameters, the argument itself will be modified. Such
assignments are discouraged, as if the function is called with a
constant as an argument, the constant's value will change, which
usually has disastorous results.
There are three forms of function declaration. In the first form,
the value of the function is the value of the expression to the right
of the the =. For example, the following function calculates the
_
cube of a number.
FUNCTION CUBE(X) = X * X * X;
PRINT CUBE(2);
8.
The second form is used for more complex functions. Its value is the
expression part of the last RETURN statement executed within that
______
function, as there may be more than one RETURN statement in a
______
function. For example, the following function returns the maximum
amplitude of an waveform contained in an array.
_______________________
(1) This is the FORTRAN IV standard calling sequence on the PDP-10.
Page 6
Music Manual Declarations
FUNCTION AMPLITUDE(ARRAY M);
BEGIN VARIABLE I,MAX;
MAX←0; COMMENT Initialize maximum amplitude;
FOR I ← 0 STEP 1 UNTIL LENGTH(M)
DO IF ABS(M[I])>MAX THEN MAX←ABS(M[I]);
COMMENT Compare each element with
current maximum;
RETURN MAX; COMMENT The value of the function is
the maximum amplitude found;
END;
The third form is used for functions written in FORTRAN or machine
code. It defines the argument list which the function expects to see
and fetchs the address from DDT's symbol table. This means that you
must to use the same name for the function as was written in the
program or NEWMUS will not find its address! The following is an
example of this form of declaration.
EXTERNAL FUNCTION SQRT(X);
WARNING: The syntax for formal declaration will be changed soon to
conform to ALGOL.
xαHC2
Page 7
Music Manual
SECTION 3
_______ _
Expressions
___________
<expression> ::= <simple expr><relop><simple expr>|<simple expr>
<simple expr> ::= <term>|<term><addop><simple expr>
<term> ::= <factor>|<factor><mulop><term>
<factor> ::= <primary>
<primary> ::= -<primary>|(<expression>)|<function call>|
<unit generator call>|<variable>←<expression>|
<variable>|<array name>(expression)|<constant>
<relop> ::= <|=|>|α≤|≠|≥
<addop> ::= +|-
<mulop> ::= *|/
Expressions are like algebraic formulae with certain changes required
so that they may be typed on a keyboard. For example, '*` is used
instead of 'x` and '/` has been used to indicate division. The use
of parenthesis is similar, but the following:
3+45
_____
72
should be written as (3+4*5)/(7*2), not 3+4*5/7*2. When in doubt,
put in the extra parenthesis. In mathematical notation, there is an
implied multiplication frequently used which must be stated
explicitly in NEWMUS, therefore 2x+3 should be written as 2*X+3. It
_____
is also necessary to expiicately parenthesis the arguments to
functions which would not be required in mathematical notation, for
example, sin x should be written as SIN(X). Relational operators,
______
(as in x>4) are defined to evaluate to 0 if false and 1 if true.
3-1 Function Call:
___ ________ _____
<function call> ::= <function>(<parameter list>)
<parameter list>::= <parameter>,<parameter list>|<parameter>
<parameter> ::= <expression>|<array>|<string constant>
A function call consists of the function name followed by a list of
Page 8
Music Manual Expressions
parameters separated by commas and enclosed by parenthesis. The
effect is to call the function (or subroutine) with that list of
parameters. If the function is not defined to return a value, such
as a FORTRAN subroutine, the value of the function is undefined and
may be almost anything. For additional information on functions, see
Page 5. For descriptions of the built-in functions available, see
Page 21.
Example:
PRINT SQRT(2);
1.414213
3-2 Unit Generator Call
___ ____ _________ ____
A unit generator is a special kind of function, as it may contain
both at I-time and R-time code and requires special initialization,
Hence a unit generator call is only legal within an instrument. Note
that a unit generator call within an expression can not be refered to
by Un. Only unit generators used as statements are counted for U
_ _
symbols. See Section 16.
Page 9
Music Manual
SECTION 4
_______ _
Statements
__________
<statement> ::= <function call>|<unit generator call>|
<WHILE statement>|<UNTIL statement>|
<FOR statement>|<conditional statement>|
<PRINT statement>|<assignment statement>|
<block>
4-1 Function Call:
___ ________ _____
<function call> ::= <function>(<parameter list>)
<parameter list>::= <parameter>,<parameter list>|<parameter>
<parameter> ::= <expression>|<array>|<string constant>
A function call consists of the function name followed by a list of
parameters separated by comm`s and enclosed by parenthesis. The
effect is to call the function (or subroutine) with that list of
parameters. If the function returns a value, that value is lost.
Example:
SYNTH(F1); COMMENT Call the ftncpinn SYNTH w)th F1
`s an argument;
4-2 Unit Generator Call
___ ____ _________ ____
<unit generator call> ::= <unit generator>(<parameter list>)|
<unit generator>[<expression>](<parameter list>)
∞E∀≥;X.Dλ→y-l<X=
}H~<d(λ≤n8z8-D~z;LD≠yH∧\;XnM;{K∧<h~.Dλ≠8/∀_{{NL:;C!,[⎇~∧=λ∩%↑~;9$;Yλ∧
K=~-\(_{lL(_;LD≤Y<&]<Y<d∧≤|→,=8;λ
≥Z=~,≥~>X.M;{K↓QR→;L<(λ(∞YJ=λx;Y<L~β\H<;≠λ∧
<h≠mm≡(≠\x;λ∞⎇=~~-d_;H∧
;L⎇∞.;99NEH∃≡(h∞l⊗c.T
v2εnMαπ.m≡Bε>]lW⊗∂M}"εNd⊗rε≥l7'↔≥\Vw"<⊗rε,WK↔≠/⊃↔⊃β&yβe¬+984R↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α`4*}s3eβ.s'Qβ>+;↔K∂#?KMπ+O↔⊃εMβO&S↔7.sQMβ∂⊃∃β∂}+;S↔#M←dAT@gs[ ←YfX↓SL~∀@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@0~∃Btnit9rw2y_z7y⊂~yP:yYr⊂⊂;Zz4⊂0[⊂2|8≤2yyt[w⊂4zλ4yP7≠z⊂⊂1[zw:2Y↔⊂⊂)IrFE)Yqz4w[⊂_[↔βEεEεBεE⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂⊂λ⊂⊂⊂(_srP_LεEGdβSST
tDLHTβf≡⎇lFO&≥|f∞cdλDzβN>B∂&]\Vw#aQ hT∀
tDLHTπ∨&≡LVj&N∧∧_rF≤∀→#ε:_iQ∀reserved word WHILE, an ¬xPrab∪)mf,
_____
called the condidi.n f.llgw¬d b9 tHe reserved word DO and !
__
sta⊗<ttvtement. So long as the condition is true, i.e. ngt zero, the
statement will be rep%!ted indefinitely. Generally, the statement
affects part of the condition and the statement eventually
terminates.
Example:
I←1; WHILE I<1000 DO PRINT(I←2*I);
2. 4. 8. 16. 32. 64. 128. 256. 512. 1024.
4-4 UNTIL Statement
___(ε⊂εεεEεEβE≡*g∃$f⊂)]0z2vY78∨↔'O(⊃ t∂≤⎇∧≡→;9-n∂H∃)j∩3λπL{{Y
≡~;{L≥∂C"AQP;H∧
3U∩)Dλ≤⎇≡→;9-nλλ~.4λ≠~-<(_;D∧∃r∩)H(λ≤nL=→;,]]λλ←_y<∞Dλ≥~≡λ≥~Q"\⎇≡→;9-nλ~<d>→8n↑→9λ,9[|LTλ≥≡*ε=⎇f&OM≥vrε≥lBεf⎇}ααπL↑&nNl≡F/~∞⎇ε.pQ,FB*∧6vvM≡FN}d
↔~α∞N#.*d∧αOD6vw=≡7'~∧
v2α∞Mε*π,↑6/↔l\Bαπ|}&"αλHrbε⊃P"αα∧∧ααα∧∧ααα∧∧ααα∧∧ααα∧∧ααα∧∧ααα∧∧ααα∧∧ααα∧∧ααα∧∧ααα∧∧ααα∧∧ααα∧β↓@h.>F∂&]\Vw"mvff}|V"ε/∀π&FT∞&/≡↑.f."∞⎇w⊗"
Ye$LD⊗v"≥bαε←∞π⊗/>=⊗}rD∞FF(Q$ααα∧∧ααα∧∧ααα∧∧ααα∧∧ααα∧∧ααα∧∧ααα∧∧ααα∧β↓AAβ↓PV≡⎇lFO&≥⎇bph!Q$/F≥←3∃hhP4*&{ Amα$yαBJLrQ"&|I5E%¬*:R&bα$qAXh(4)Jq↓a9β99↓Yr↓U9↓"q↓M9β⊃9↓Er↓@4(hP4(4S!5U↓∧2>Iα∨#πS↔n+;P4⊃@`a↓↓@`aA@```A@``4Ph(4)d2>Iβ∨#πS↔n+;QyβQiuα4zI↓s6K'π⊗c∃z⎇f+cCK/≠O'?sqαNR-↓↓s↔GβK↔O≡K?9yh)↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓α,rR&1βc↔cC⊗+OO'}qyα∩z↓sOS∂#↔7↔w!x4(hRS#'~βC↔K6{K7Mπ##∃β∨#πS↔n+;Qβ6;Iβ↔∞≠!β[∞cW∃β}1βS#*β[πIN3∃bβ↔∨Ns;';8h+←'&AβS#*β↔cC⊗+OO'}qβ'7n+∪'π&+3eβ6{33?>K;≥β&C∃↓≡}↓β'9π≠S↔C~β∪↔≠Ns↔⊃β↔H4+SF)βO↔≡{;⊃β/CCK↔∨≠'?9π+;S'bβ'QβO→β∨K.S↔Iπ##π9π##∃↓π##'K"β↔cC⊗+OO'}q84(hP4)↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓αε∨∃↓λ4(27W≡K
α7∞sWπ1α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓ααOSπ&+7↔;'_4(4Ph*S#*β[π3.)↓β?2βS#∃π3πK'∞∪3∃↓π;'31ε3←πO→β∃αβS#∃εcπOQπ3π3W*↓β←#N≠!β←∂_4+3/≠MβSF9βSF)βS#N∪⊃↓β/CCK↔∨≠'?9r↓α'→π##∃β6KKOQε+cCK/≠O'?r↓β'Mε;K↔π&+H4+&Cπ9β&C∃βSFKK⊃β/CCK↔∨≠'?9b↓βS#*βOSπ&+7↔;"β←'3bβ∃↓π≠/'Cε+⊃βπg#?∨↔&C↔H4V;⊃β&C∃β[∂∪'πf)βW;≡Cπ;∨.!84(hR↔cπoβ3∃hhP4*~⎇⊃α&⎇ααNR⊗α↓IαVu"&1↓∪↓αBJLrQ"%KX4(4S↓↓I9β!9↓Yr↓a9↓↓9↓E∩q↓EQr↓EY9β a9↓∪↓84(hP4(4S!5Y↓¬αJ&:"αOSπ&+7↔; h(``B↓``A@a`A@```A@`4(hP4)r¬∩&:Qπ≠SπS.k↔;Qr↓iiu¬αJ&:"↓sCKNsQβ3O≠Qx4ScCK'w!β3'∨!y↓↓α↓↓↓iSi↓s↔GβK↔O≡K?9yccCK'w!β3'∨!{qs/CCK↔∨≠'?9w`4)↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓βcOSKNs≥β∂}sOSπw!y1sπ∪';Qεc'OQw`4)↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓βcOSKNs≥β∂}sOSπw!x4(hRS#'~↓βSgε+Mβ↔∞≠!↓βw+7↔∩β?I↓π≠SK'v9β'9αβS#∃πβK';"↓β3'∨!9↓αw+7↔↔→βπK(h+CKNsS↔⊃αβ'9β7∪↔∃↓ε3'↔3"β≠?KnQ↓β>KS!β
↓βSK∞K3';:βOCπ≡)9↓↓¬≠SK'v;Mβπ⊗(4+C⊗K;S↔"↓β←'&C?WQε ↓β3.∪';:↓β?Iπ#Kπ'fK;≥↓π≠Cπ∂*βπ;⊃αβ7πeαβ';∂g+∪∃β∞sd4+≡CπKπ∨#↔I9ααS=β.sS↔Iε β∪?.∪3∃↓πW?S*aβCK.≠↔∪∃εKQβ←O#!yε;⊃↓π#=β↔w#↔H4R↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓@h(y1πβWQβNqβS←zβ∂?;≡+∂WSO3∃yph(a↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓`hP4*↔F7C3+P4*B∀J:Q↓∃~FJQC⊃%↓uα⊃2NF∃!!I%Xh(4*≥
JQ!∩I↓u↓
qQEQ∪_4(4Ph(4)"i]↓α∂≠O'∨vk↔;Q¬≠SπS.k↔;PhP``aα```A@```AA``A@```A@4(4Ph)sπ∨≠'∨;n+;Qβ∨#πS↔n+;QyβQiu↓g3πK'∞∪3∃z{c↔cC⊗+OO'}qx4(hRS#'~βOSπ&+7↔;"βπOON;;Mβ&C∃β[∞cW∃β}1βS#*β↔cC⊗+OO'}qβS=π##∃β6K'π⊗c∃βSxh+S#*β3↔≠"β?→β&C∃↓≡}↓9↓↓∧≠πWSN{9iα∂≠O'∨vk↔;Qπ#=β≠␈∪7π1πβπKπn+S↔K~↓β?→ελ4+≠.s∂S'}qβ∂πrβ#π[*βW;↔Gβ↔∂S.!βK↔∨+3SMZ↓βO↔*αBε≡*↓84(hR↔cπoβ3∃hhP4*&{ IMmα↓↓↓↓α↓↓↓α≤z66⊗u!αO↔"βS#∃π3π3W*β?→β&C∃β[∂∪'πf)↓≡'αβS=↓⊃Ml4Ph(4(hQ↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓αCπ>)↓EHhP27W≡K
α7∞sWπ1α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓ααOSπ&+7↔;'_4(4Ph)Q5B↓α3}≠,4(A@a↓A@```hP4(4Sc3?≡Yy↓iSiα
⊗<J9↓s&+∂3π⊗S'?rβ3'O#qmsO&S↔7.sQβ3O≠Qx4Sc∪↔∂fKπSN{9β3O≠Qy↓SQu↓s&+∂3π⊗S'?sqms∪.≠3πK∂#'?9εc'OQwas∪↔≡cπKπ&K?9xhQsOS∂#↔7↔w!β3'∨!y↓iSi↓sO&S↔7.sQymg≠SπS.k↔;Qεc'OQwb⊗:⊂hP4*¬∧∪3?∂Z↓β'Mε ↓β3O≠Qβ?2↓βOS∂#↔7↔w#M1β↔∪π∂//#M↓β↔IβS#*↓βK↔≡+K[↔"β←?K'→04*∀*≡&9ε;⊃↓∧*:⊃β∞s⊃↓β≡+CπK∂#↔⊃β↔I↓βSF)βO↔nK∂?3}sM9↓ααπ;g&C';≥ε#↔∂3∂∪↔⊂4W;'S#Nqβ¬β⊗c?∂-εKMβ;␈!β/;␈;9β?/#O'∪*βS#π"β3?≡Y1β/!βπ;O##';:β←#'≡Aβ'LhS∪↔∂fK↔⊃ε{WSON#∃β¬ε∪3?∂Zβ7πeε∪∃βK.3↔K↔v≠↔⊃β>KS#'rβS#π"β3?≡YβCK␈3'∪↔ h+S#∂!β'QεCπMβv{Q↓β⊗+↔9β⊗+∪↔≠Ns↔⊃9ααS#W~β[πKN3↔~β;π7/→↓β←O##'9ε∪3?∂←_4+7∂K∃β≡C?O↔rβ←'SF{WQβ⊗+';≥ε≠?;∂/∪;↔⊃π;'S!εsπ7∃ε≠?;≠fK∂SMph(4*/Cπ7Cf)h4(hRZεJL
2∃¬Amαb{ IMm¬αJ&:"αal4Ph)EI~p4(4T∩⊗≡&rαZεJL
2∃¬A2emααb⎇Q+1mαf{9aemααBJ&u!αa2KY↓α⊗t!l4(hQQUYr↓]aeph(4*¬∩&:Q¬Al4(hQEIMph(4*¬∩&:Q¬Il4(hR⊗JJ⎇⊃i↓α,r∩⊗~Lr⊗⊃αL"⊗:RL2&⊗Iα↓↓α3Ns∃↓uβ9↓=DhRBJ&u!αelhQ↓↓↓α↓↓αxhQ⎇|4Ph(4(hP4(4Ph(4(hP4(4Ph(4(hP4(4R↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓ααCπ∨*↓EL4P27W≡K
α7∞sWπ0hP4(4R↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓¬~⊗∞RLz9↓ThQ↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α```A@`a@h(4)α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓∧+cS↔v#↔⊃α≡{77πv#L4)α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓↓@```A@`aA@```A@`4(hP4(4Ph*S#/≠∃β∂}k7π;'→β7πJβ∃β.sS↔K.!βπQπ##∃β&{Aβ3/3↔1β↔IβCK.≠↔∪'v9βS#.iβ←'&@4+πr↓sπ3"β7?∪+q↓#←FK∂!βO→β↔∂F{↔⊃β∂→↓⊃%ph)↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α`4(hR↔c'#Q↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓βcπ3Qεk?∪∃t*b&PhP```@h(4*⊗+SWKrβS=αn{;'S␈⊃84(hRC3πKQ↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓βcπ3Qεk?∪∃u↓↓s'w#↔∨↔∪p4(`A@`4(hRC3πO→βS#*β7WON→βW63↔K↔"β'9↓ε≠?K∃π##∃β∨β↔∂'6K↔⊃βw+7↔∩β?→↓π#'7↔~q↓α'0h+;=εK∨Wn+;QβO→β∨'6+91β}s∃β'~βπOO.k↔⊃8hP4*O∂3∃i↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓sπg!β7?&)zNε4(4(`A@`4(hROπ[/→βS#*β7WON→βW63↔K↔"β'9↓ε≠?K∃ε{9β¬ε#'O-ε3'3∃r↓απQααOSπv3?K⊃bβS#'_h+'MεK9↓E∩β'Qε3?K7∂!84(hRCK'w!i↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓βcπ3Sn{∪∃z¬∩&:Qβc↔cC⊗+OO'}qyl4Q@```@h(4*π∪';S~βS#∃π3π3W*β?→β&C∃β↔GβK↔O≡K?99∧KQβ'~β;?]ε9↓β␈∪∪';∂∪eβO&S↔7.sQ84U≠↔∃απ∪';Q¬≠SπS.k↔;Qε{9αC∞;∃↓E∩p4(4U∪↔O↔#Q↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓f3Qβn{∪∃z∀*N⊗PhP```A@4(4T#↔3↔&+Mβπfaβ';∨#KW7.sSM1εKKπO→1βπv!β[π⊗Kπ3*q↓↓α/≠O↔;&Kπ33JβK↔O&{K↔LhSS#∃ε≠?7CNc↔I↓π#=βSF)↓βO&S∃β>C'∂!αβ'Qβ>M↓βNqβ←#.q↓β'"β←πMαβ3?π&+⊃β?⊂h+≠K␈S↔98hP4*≠⊗+↔k∃R↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓sπg!β7?&)z~J,*j∀4Q@```A@4(4Tkπ/∃π##∃βπ∪↔O↔w!βOS∂#∃β?2↓α:⊗<jVMβNsS=β&C∃β'vKS'πbβOSπ&)↓βπv!βK↔'+∂↔LhSS=β&C∃↓βnK;'7.iβ∂?⊗)βK↔∂+'K↔"q↓↓α⊗+SWKrβS=β&C∃↓αn{;'S␈⊃βS=αβπ33␈9βS#(h+∂?⊗)β'7∞;∃βSzβ∃β≡[↔⊃r↓α'→ε αJ⊗≤*Qβ'~β3πS/⊃β∪?v)β'9π##'Mε≠?K∃εK7π∨*`4)↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓`A@``4VKQβ←Nc1βK/#WK9π#=βSFKMβO∂3↔⊃β∨#πS∃ph(4*⊗+∪W∂*α∂?K*βO'k+Q↓↓↓α↓↓↓↓α↓↓↓s∞cQβ7}#∃z⊗D~&N∀hP```A@a`A@a`A@`4(hRK↔∪.≠↔Mβ&yβS#*β7';NkW5β≡{K∃β⊗+GW'⊗+⊃84Ph*NB~∃i↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓sπ3"β7?∪+rNBε≤(4(`A@``4Ph(4)α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓¬βπ∨∃β P4(β↑r Music Manual Extended Commands
Prints the total space available followed by the core buffer space
and the number of seconds of sound which may be produced.
DDT: <alt mode>DDT
___
Starts up RAID or DDT. [Not usually loaded in system version but may
be in other core images.]
Printing the Symbol Table: <alt mode><declarator> LIST
________ ___ ______ _____
This list the contents of the symbol table. Please note that this
does not include symbols in inner blocks. The following types may be
listed:
VARIABLE
FUNCTION
ARRAY
INSTRUMENT
UNIT_GENERATOR
Page 15
Music Manual
SECTION 6
_______ _
Unit Generators
____ __________
Consider producing the sound of a simple sine wave. If one had to
call the sine subroutine for each sample, it would take about
minutes to compute a second of sound at the lowest sampling rate!
Therefore, instead of calculating the function for every sample, an
array is filled with the values of the function. Then, for each
sample, the value is read out of the appropriate entry in the array,
instead of calculating it. Of course, for many kinds of functions,
the value will not be as exact, but it is usually adequate for use in
music. There are unit generators which do interpolation, instead of
a simple array lookup, and these will produce accurate enough values
for most critical cases.
6-1 Controlled Calling Rates
___ __________ _______ _____
In many cases, a function does not change rapidly with time.
Therefore to save computer time, it would be desirable not to have to
call the unit generator for every sample. This, which is called a
controlled calling rate, is expressed by placing a bracketed
expression immediately following the unit generator name in a unit
generator call.
Example:
OSCIL[10](P4,10*MAG/P2,F1);
Calls the unit generator OSCIL every tenth sample, and uses the same
value for the other nine samples.
6-2 VFMULT
___ ______
Argument list:
1 - Amplitude
2 - Subscript
3 - Array
Page 16
Music Manual Unit Generators
VFMULT meltiplies the first argument times the element of the array
described by the second argument. If the second argument is getter
th`n the array length, it is reduced by that array length until it is
within the size nf tyP0y9λ\WεEβE∧EεB≠⊗YPλ&$g"SεEε⊂⊂εεEβEεE \3xvr[:⊂64\z≥εEβE⊂⊂⊂λ⊂⊂⊂⊂P⊗P [x64z≥r2FEλ⊂⊂⊂⊂λ⊂⊂→⊂P)4yYP:4vYWj7z_v⊂:4[rFE⊂λ⊂⊂⊂⊂λ⊂→P⊗H"2qp↑P:4vYWj7z_v⊂:4[rFE⊂λ⊂⊂⊂⊂λ⊂~⊂⊗H*7z0[⊂:4vYFE⊂⊂λ⊂⊂⊂⊂λ~P⊗P⊂y90|CE⊂⊂⊂λ⊂⊂⊂⊂
⊂⊗P$[4z4p[⊂87t[:⊂4wλ0y90↑FEεE∃44yP→:w1z~ww⊂:\ryP0H→\~⊂≥7y2≤∞\X>&FdFG⊗\WO↔∂&K?;MbβS=β>+;↔K∂#∃βπph+↔;6+3?C*↓β≠Gv≠S'?2nSa@ 3aparate rise time, intermediate time and
λdecay t)-e. The rise time and decay tim% are ! fUnction in the
second `pgqmDlp,544x2λ⊂x∩zK∩6:_
→λ≥
(≥≠nL;λ≥
≥9+H∧
~→:.$λ≥X-F9<h
α XdD~;Yε$≠(>&α∀2αb>≥Dπ&\Gπ∂∂␈∪∪';:βS=β&C∃β≠}c3?←Ns≥β≠␈∪6W1
`4(0B↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓βd⊂`BDλ,%+@∀⊂1 λ¬01
∀⊂&!"Hλ∧∧λλλ∧∧λλλ∧∧λλλ∧∧λλ→\x>(∞E;)*jα≤"3α<≤"3"∀)H02λ pCKl%s:
To obtain a ris% tim% nf .1 sEconds and a decay time ,f .4 s%cnnds,
LINEN(P4,.1,.4,P4,F1,TMP←0);
To obtain a 10 rise time and a 33.3 decay time,
LHNDN(P4 0(##1(100,F1,TMP←0);
Dh% in t)al87tw≥⊂4w⊂_y90|H⊂6zy]⊂12P_P;0y~pq62H0w2≡=≠⎇;Dλ≥<n\;≠≡$Y#"O,<[kD¬∩9H
≡λ~,d(λ{lnu_≠NEλ≡;nT≥z;
D_{≠l,Y<G&F≡G?9∨!π;Q
I84(hP4(4S15Q↓¬2ε2V(h(``B↓``A@`4(hP4*π⊗;U7↔7!β3'∨!h4(hQ↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓↓↓↓α↓@@⊂!aλ~∧A Unit Gen$rat∞r1λλλ